package com.dog.modules.iot.mqtt.consumer.enums;

/**
 * 消息类型定义体
 */
public enum InCommandType {

    TEST(0),

    /**
     * 设备下线通知
     */
    DISCONNECT(-1),
    /**
     * 设备上线通知
     */
    CONNECT(-2),
    /**
     * 设备状态同步回复
     */
    DEVICE_STATUS_SYNC_RESP(2001),

    /**
     * 设备已经订阅topic通知
     */
    SUBSCRIBED(2005),



    /**
     * 设备监控数据上传
     */
    MONITOR_DATA_UP(1100),


    BASIC_PARAM_DATA_UP(1002),


    /**
     * 上报激光定位数据
     */
    LASER_DATA_RESP(1103),

    /**
     * 3.2 注销设备
     * ox1104
     */
    LOGOUT(1104),

    /**
     * 本体设备信息上传
     * 0x1343
     */
    DEVICE_INFO_SYNC(1343),

    /**
     * 3.15 修改工作地图
     * 0x1340
     */
    WORK_MAP_SYNC(1340),

    /**
     * 3.12、报警管理
     * 0x1316
     */
    ALARM(1316),

    ALERT(1315),

    /**
     * 故障管理
     * 0x1317
     */
    BREAKDOWN(1317),

    /**
     * 故障状态上报
     * 0x1318
     */
    BREAKDOWN_STATUS_SYNC(1318),

    /**
     * 3.17 本体区域路径上传
     * 0x1342
     */
    UPLOAD_MAP_PLAN_PATH(1342),

    /**
     * 0x2110:清洁机器人实时数据上传（本体->服务器）
     */
    CLEAN_ROBOT_REALTIME_DATA_UPLOAD(2110),


    /**
     * 云端下发任务回复
     */
    TASK_REPLY(1007),
    /**
     * 任务同步
     */
    TASK_SYNC(2400),
    /**
     * 任务状态上报
     */
    TASK_STATUS(2401),

    /**
     * 任务报告上报
     */
    TASK_REPORT(2411),

    /**
     * 预约任务状态上报
     */
    TASK_SCHEDULE_STATUS_UP(2512),

//    /**
//     * 任务事件上报
//     */
//    @Deprecated
//    TASK_EVENT(2412),

    /**
     * 4.4.3、指令状态上报
     * 0x2603
     */
    STATUS_UP(2603),

    /**
     * 4.9 设备状态上报
     * 0x2607
     */
    STATUS_SYNC(2607),

    /**
     * 小蓝鲸警报事件协议
     * 0x2608
     */
    ALERT_EVENT(2608),

    /**
     * 4.11.2 热成像探测器报警状态设置
     * 0x2714
     */
    UPDATE_ALARM_STATUS(2714),

    /**
     * 洗地机公版2.0 任务报告汇总定时发送到邮箱设定
     */
    WASHING_FLOOR_MACHINES_TASK_REPORT_SUMMARY_TIMING_SETTING(3002),

    ERASE_MAP(1344),

    LOG_ADD(3003),

    LOG_UPDATE(3004),

    /**
     * 取消日志上传回复
     */
    LOG_UPLOAD_CANCEL_RESP(3105),


    WORKSTATION_MATCH_RECORD(4000),

    WORKSTATION_STATUS_SYNC(4001);

    private final Integer cmd;

    InCommandType(Integer cmd) {
        this.cmd = cmd;
    }

    public static InCommandType valueOf(Integer cmd) {
        for (InCommandType value : values()) {
            if (value.cmd.equals(cmd)) {
                return value;
            }
        }
        return null;
    }

    public Integer getCmd() {
        return cmd;
    }
}
